Synchronization is the process of maintaining consistency between two distinct datastores by periodically comparing the changes which have occurred to each since the last time they were known to be consistent. Each party to a synchronization must be capable of supplying all data stored by the party upon request, and be capable of supplying only the changes to the data stored by the party since the last completed synchronization. Each party must agree upon a scheme to be kept in sync, the manner of data representation, and the semantics of the synchronization primitives. Synchronization primitives may include adding data to a datastore, updating data in a datastore, and deleting data from a datastore. Additionally, each party must be capable of a rollback if a problem occurs during a synchronization to avoid corrupting the datastore. A rollback has the effect of placing the datastore in the state it was in before the synchronization was initiated.
Modern data processing systems, such as a general purpose computer, a handheld computer, a cellular telephone, media players, etc. have been reduced in size to the point that they can often be readily carried around by a user. Furthermore, these devices are powerful enough that they can provide substantial computing power to allow a user to maintain contact information, maintain calendar information, provide email functionality, and even provide web browsing. These devices also may include support for a task or a To Do list or database and other sources of data for a user. An example of a small handheld computer is the Apple iPhone or the Apple iPod Touch.
These handheld computers typically allow a user to synchronize their data between the handheld computer and another computer, such as the user's desktop computer, such that both computers maintain the same set of information, such as the same calendar for the user, thereby allowing the user to view their calendar on either the desktop computer or the handheld computer. The synchronization is typically performed by coupling together the host computer with a handheld computer through a mechanical and electrical connection provided by a dock.
FIG. 1 shows an example in the prior art of a handheld computer being coupled mechanically and electrically to a host computer through the dock 126. The system 110 includes the host computer 12 and the handheld computer 114. Synchronization software 116, running on the host, performs the synchronization between the respective databases, such as the contacts database 118 which is synchronized with the handheld contacts database 120. Furthermore, the synchronization software 116 synchronizes the calendar database 122 on the host computer with the handheld's calendar database 124. Other embodiments may include synchronization of databases containing to-do items, web bookmarks, photographs, videos, MP3s, notes, widgets (e.g., configuration settings for widgets), and other data types.
Certain synchronization systems are described under the name “SyncML” and further information about these systems can be found at openmobilealliance.org.